#include <p32xxxx.h>
#include "Gpio.h"
#include "Enumerations.h"

Gpio::Gpio(Enums::Gpio::Ports port)
{
	this->Port = port;

	// Initialize Pins array setting each pin as an input
	for (int i = 0; i < Enums::Gpio::Pins::PinCountPerPort; i++)
	{
		this->Pins[i] = Pin(port, (Enums::Gpio::Pins::Number)i, Enums::Gpio::Pins::Direction::Input);
	}
}

Gpio::~Gpio() { }

Pin Gpio::GetPin(Enums::Gpio::Pins::Number number)
{
	return this->Pins[(UINT16) number];
}

std::array<Pin, Enums::Gpio::Pins::PinCountPerPort > Gpio::GetPins()
{
	return this->Pins;
}